package com.newrong.yuanze7.liskov.improve;

/**
 * 里氏替换原则
 * 子类尽量不要重写父类的方法
 */
public class Liskov {

    public static void main(String[] args) {

    }

    // 创建一个更加基础的基类
    class Basic{
        // 把基础方法写在基类
        public  int func1(int a,int b){
            return a - b;
        }
    }
    class A extends Basic{
    }

    class B extends Basic{
        // 如果B需要使用A的方法 使用组合
        private A a = new A();
        public int fun3(int a,int b){
            return this.a.func1(a,b);
        }
        //重写A类的方法 使用B去调用fun1时出现计算错误
        public int func1(int a,int b){
            return a + b;
        }

        public int func2(int a, int b){
            return func1(a,b) + 9;
        }
    }
}
